La récente sortie de la version 2 de Mergify est l’occasion de présenter cet outil d’aide aux développeurs utilisant GitHub et ses demandes d’intégration (pull requests en anglais).
Le problème
La plupart des développeurs utilisant GitHub font usage des demandes d’intégration pour modifier le code contenu dans leur dépôt de source. C’est d’ailleurs la facilité d’ouvrir de nouvelles demandes qui est devenue un des facteurs de succès de GitHub à son début.
Or, les demandes d’intégration se sont sophistiquées, elles intègrent une grande quantité d’information et des systèmes d’intégration continue (Travis CI, Circle CI, etc.).
Il devient donc de plus en plus compliqué pour les projets de gérer les demandes d’intégration, nombre d’entre eux créent des robots pour les y aider. CPython, par exemple, a écrit un robot nommé Miss Islington pour les aider à rétro‐porter des correctifs de bogues.
La solution
Le projet Mergify est né de ce constat et propose un robot programmable pouvant servir à implémenter différentes façons de manipuler et gérer les demandes d’intégration. Le projet est sous licence Apache 2.0 et utilise GitHub pour son développement (évidemment !).
Un problème récurrent est l’intégration (merge) automatique d’une demande d’intégration (pull request) lorsque certains critères correspondent. Par exemple, les développeurs veulent intégrer un changement de code lorsque :
- le système d’intégration continue valide le changement ;
- un humain approuve le changement ;
- la demande d’intégration n’a pas d’étiquette
work-in-progress
.
En écrivant une règle Mergify ainsi :
pull_request_rules:
- name: automatic merge
conditions:
- status-success=continuous-integration/travis/pr
- "#approved-by-reviews>=1"
- label!=work-in-progress
actions:
merge:
method: merge
Dès que la demande d’intégration correspondra à ses critères, le moteur de Mergify se chargera d’intégrer (merge) le changement de code.
Mergify fournit des rapports complets des actions qu’il va exécuter dans l’onglet Checks des demandes d’intégration :
Fonctionnalités
Mergify propose différentes actions :
- merge, qui permet d’intégrer une pull request ;
- backport, qui permet de dupliquer une demande d’intégration sur une nouvelle branche afin de rétro‐porter un changement ;
- close, qui permet de clore une demande d’intégration (sans intégrer le changement) ;
- delete_head_branch, qui permet de supprimer la branche à l’origine de la demande d’intégration ;
- label, qui permet d’ajouter ou de retirer des étiquettes ;
- dismiss_reviews, qui permet de supprimer les revues de code effectuées.
Toutes ces actions peuvent être combinées et utilisées sur une multitude de critères venant de la demande d’intégration, comme le nom, l’auteur, les étiquettes, le nombre de fichiers modifiés, etc.
Hébergement
Mergify peut être hébergé sur votre propre serveur ou utilisé via la plate‐forme Mergify.io qui fournit le service hébergé pour les utilisateurs, et gratuitement pour les projets open source.
Aller plus loin
- Mergify.io (160 clics)
- Mergify sur GitHub (118 clics)
# tester?
Posté par lowsqueak . Évalué à 1. Dernière modification le 09 novembre 2018 à 17:00.
le code a l'air d'être ici https://github.com/Mergifyio/mergify-engine
mais je n'ai pas trouvé de doc pour tester on-premise.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.